package br.inf.prismasoft.academix.entity;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

/**
 * AlunoEndereco generated by hbm2java
 */
@Entity
@Table(name = "ALUNO_ENDERECO", schema = "ACADEMIX")
public class AlunoEndereco implements java.io.Serializable {

	private static final long serialVersionUID = -2542965805790176439L;
	private AlunoEnderecoId id;
	private Endereco endereco;
	private Aluno aluno;
	private String indTipoEndereco;
	private int numEndereco;
	private String desComplemento;

	public AlunoEndereco() {
	}

	public AlunoEndereco(AlunoEnderecoId id, Endereco endereco, Aluno aluno,
			String indTipoEndereco, int numEndereco) {
		this.id = id;
		this.endereco = endereco;
		this.aluno = aluno;
		this.indTipoEndereco = indTipoEndereco;
		this.numEndereco = numEndereco;
	}

	public AlunoEndereco(AlunoEnderecoId id, Endereco endereco, Aluno aluno,
			String indTipoEndereco, int numEndereco, String desComplemento) {
		this.id = id;
		this.endereco = endereco;
		this.aluno = aluno;
		this.indTipoEndereco = indTipoEndereco;
		this.numEndereco = numEndereco;
		this.desComplemento = desComplemento;
	}

	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "indAluno", column = @Column(name = "ind_aluno", nullable = false)),
			@AttributeOverride(name = "indEndereco", column = @Column(name = "ind_endereco", nullable = false, length = 8)) })
	@NotNull
	public AlunoEnderecoId getId() {
		return this.id;
	}

	public void setId(AlunoEnderecoId id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ind_endereco", nullable = false, insertable = false, updatable = false)
	@NotNull
	public Endereco getEndereco() {
		return this.endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ind_aluno", nullable = false, insertable = false, updatable = false)
	@NotNull
	public Aluno getAluno() {
		return this.aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	@Column(name = "ind_tipo_endereco", nullable = false, length = 3)
	@NotNull
	@Length(max = 3)
	public String getIndTipoEndereco() {
		return this.indTipoEndereco;
	}

	public void setIndTipoEndereco(String indTipoEndereco) {
		this.indTipoEndereco = indTipoEndereco;
	}

	@Column(name = "num_endereco", nullable = false)
	@NotNull
	public int getNumEndereco() {
		return this.numEndereco;
	}

	public void setNumEndereco(int numEndereco) {
		this.numEndereco = numEndereco;
	}

	@Column(name = "des_complemento", length = 20)
	@Length(max = 20)
	public String getDesComplemento() {
		return this.desComplemento;
	}

	public void setDesComplemento(String desComplemento) {
		this.desComplemento = desComplemento;
	}

}
